This invention relates to the installation of software to enable communication between a host device and a peripheral.
When a device is connected to a computer, the computer may need to use software to communicate with the peripheral and to expose the functionality of the device to the user. The software runs on the computer and provides the means for the computer to transfer data to and from the peripheral and to activate functions of the peripheral. The software may comprise drivers and application software. For example, the driver software may provide a library of procedures that can be called by processes running on the computer in order to have the device carry out a function. The procedures can receive parameters from the calling process and form suitable signals for communication to the peripheral to have it carry out the function. The application software may provide a User Interface for some user to utilize the functionality within the peripheral
In order for the software to be used on the computer it must first be installed on the computer. For drivers, this typically involves storing the software on non-volatile storage accessible to the computer, for example the computer's hard disc drive, and registering the driver software so that the computer knows that it is available and is to be used for communications with the device. For application software, this typically involves installing the software from some location on a network accessible to the computer, for example a corporate LAN or the Internet, or installing the software from some medium, for example a CD or DVD.
Installing software can be complex and can call for computing knowledge, making it a difficult task for unskilled people. Therefore, in making a peripheral device easy to use, it is important to make its software easy to install.
The software is usually installed around the time the hardware peripheral device is first attached to the computer; either before or after, depending on the precise installation procedures recommended by the manufacturer to ensure that the software installs cleanly. The software is sometimes supplied on a CD or other disc that is sold with the peripheral device in question, or sometimes downloaded from the internet. These approaches have drawbacks: software and drivers on disks are not necessarily the latest version with the fewest software defects; typing a URL from some documentation can be time consuming and error-prone;
One approach to making software easy to install is to have the computer download the software automatically from a central source. This approach is available in operating systems such as Microsoft Windows XP®. When the peripheral device is attached to the computer it provides the computer with its identity. The computer then contacts a server via the internet and attempts to locate a suitable device driver for that device. If a suitable driver is located then the computer downloads and registers it. This approach has a number of disadvantages. First, it only works if the server is correctly configured with the appropriate drivers. Second, it only works if the computer has access to the central server; thus if the computer is not connected to a network then it cannot access the drivers. Third, users may have concerns over security if they are to download the drivers from a source they had not themselves specified.
Operating systems typically support some standard interface protocols, drivers and applications for communicating with peripheral devices of standard types. For example, operating systems can typically support a standard protocol for communicating with a mass storage device such as a disc drive over a USB interface. However, standard protocols and applications are not generally suitable for communicating with non-standard devices.
One approach for improving the installation of drivers and software is to use a USB composite device, as outlined in WO 2004/038584. This approach has several disadvantages, most significantly a race condition between the USB manifestations of the mass storage device and of the custom USB device. This approach also leaves an additional drive installed on the host computer, which may be confusing to users. A further system is described in US patent publication number 2008/0195768. In that system a device presents itself as two different devices. Initially on connection the device presents as a USB storage device which stores the required software, and subsequently the device presents as the actual device having the true functionality of that device once the software has been installed and/or verified. However, this requires the device to have a USB bulk-transfer endpoint and implement a FAT file system or similar.
There is therefore scope for an improved means of installing drivers and/or executable files for interacting with a peripheral device.